package com.study.youlai.shared.auth.service;

import com.study.youlai.shared.auth.model.AuthTokenResponse;
import org.springframework.security.core.Authentication;

/**
 * @ClassName: TokenService
 * @Description: 令牌接口
 * @Author: li
 * @Date: 2025/1/17 23:35
 * @Version 1.0
 **/
public interface TokenService {

    /**
     * 生成认证 Token
     *
     * @param authentication 用户认证信息
     * @return 认证 Token 响应
     */
    AuthTokenResponse generateToken(Authentication authentication);

    /**
     * 解析 Token 获取认证信息
     *
     * @param token JWT Token
     * @return 用户认证信息
     */
    Authentication parseToken(String token);


    /**
     * 校验 Token 是否有效
     *
     * @param token JWT Token
     * @return 是否有效
     */
    boolean validateToken(String token);


    /**
     *  刷新 Token
     *
     * @param token 刷新令牌
     * @return 认证 Token 响应
     */
    AuthTokenResponse refreshToken(String token);

}
